﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using CoVanHocTapData.Entities;

namespace CoVanHocTapData.Interface
{
    public interface IKetQuaHocRepository
    {
        List<KetQuaHoc> LayKetQuaHocTapTheoSVMonHoc(string monHocID, string sinhVienID, IQueryable<int> hockyIDList);
        IQueryable<KetQuaHoc> LayKetQuaHocTapTheoSVMonHoc(string monHocID, string sinhVienID);
        KetQuaHoc LayKetQuaHocTapCaoNhatTheoSVMonHoc(string monHocID, string sinhVienID);
        KetQuaHoc LayKetQuaCaoNhat(List<KetQuaHoc> kqhtList);

        void DSMonHocTichLuy(string maSV, int BatBuoc_TuChon, out List<MonHoc> dsMHDaHT, out List<MonHoc> dsMHChuaHT, out List<MonHoc> dsGDQPDaHT, out List<MonHoc> dsGDQPChuaHT);
        List<KetQuaHoc> DSMonHocTuChonTichLuy(string maSV);

        float TinhDTBTichLuy(SinhVien sv, string NganhID, string HeDaoTaoID);
        int TinhSoTCTichLuy(SinhVien sv, string NganhID, string HeDaoTaoID);

        float TinhDTBTichLuyCacMonHocKhoaQuanLy(SinhVien sv, Khoa khoa);
        float TinhDTBTichLuyTheoDsMH(List<KetQuaHoc> monHocList);


        List<KetQuaHoc> LayTatCaKetQuaMonKhongTrungCuaSinhVien(SinhVien sv);
        KetQuaHoc LayMonAVGTCaoNhatDaHT(string maSV);

        void DSMonHocTichLuyCN2(string maSV, int BatBuoc_TuChon, out List<MonHoc> dsMHDaHT, out List<MonHoc> dsMHChuaHT);

        //vy
        bool KiemTraSinhVienHocLucYeu(SinhVien sv, string NganhID);
        bool KiemTraMonHocCuaSVTaiHocKy(string monHocID, SinhVien sv, string NganhID, string HeDaoTaoID, int HocKyID, out KetQuaHoc kqMax);
        void DSMonHocTichLuy(SinhVien sv, int nienKhoaID, string nganhID, string heDaoTaoID, int BatBuoc_TuChon, out List<MonHoc> dsMHDaHT, out List<MonHoc> dsMHChuaHT);
        bool LayDanhSachSVDaHocDsMH(SinhVien sv,List<MonHoc> dsMonHoc,MonHoc monHocKhongTinh, out float dtbtlKhoi,out float tinChiKhoi);
        List<MonHoc> LayDanhSachMonHocDaHocCuaSVTheoKhoi(SinhVien sv, List<MonHoc> dsMonHoc);

        void DSMHGDQPTichLuy(string maSV, out List<MonHoc> dsMHDaHT, out List<MonHoc> dsMHChuaHT);

       // int TinhDiemRenLuyen(string maSV);

        List<KetQuaHoc> LayTatCaDiemRenLuyen(string maSV);

        List<KetQuaHoc> LayDSSVTheoKhoaVaMonHoc(string HeDaoTaoID,string NganhID, int NienKhoaID, string MonHocID);

        List<KetQuaHoc> LayTatCaKetQuaMonDaHocKhongTrungCuaSinhVien(SinhVien sv);

        List<KetQuaHoc> LayTatCaKetQuaMonDaHocKhongTrungCuaSinhVienTruMon(SinhVien sv,string MonHocID);

        IQueryable<KetQuaHoc> LayTatCaDSSVDauMH(string monHocID,string nganhID, string heDaoTaoID);
        IQueryable<KetQuaHoc> LayTatCaDSSVRotMH(string monHocID, string nganhID, string heDaoTaoID);
    }
}
